Las propiedades de entorno permiten a una aplicaci�n y a un usuario personalizar el uso del JNDI. Podemos personalizar un proveedor de servicio particular usando un fichero de recursos de proveedor. Al igual que un fichero de recursos de aplicaci�n, un fichero de recursos de proveedor contiene parejas de clave/valor presentadas en el formato de propiedades de fichero (ver java.util.Properties).
Un fichero de recursos de proveedor tiene el nombre.
prefijo/]jndiprovider.properties
donde prefijo es el nombre de la implementaci�n del contexto del proveedor, con cada punto convertido en una barra inclinidad. Por ejemplo, supongamos que el nombre de la clase de la implementaci�n del contexto es com.sun.jndi.ldap.LdapCtx; su nombre de fichero de recursos de proveedor ser�a "com/sun/jndi/ldap/jndiprovider.properties".
Mientras que una simple aplicaci�n puede usar varios ficheros de recursos de aplicaci�n, s�lo puede haber un fichero de recursos de proveedor por cada provedor. De echo, el fichero de recursos de proveedor normalmente viene empaquetado con el proveedor de servicios y se carga usando el mismo cargador de clases que carga el proveedor de servicios.
�Utilizaci�n
El fichero de recursos del proveedor tiene dos prop�sitos. Primero, permitir al proveedor de servicios construirse sin componentes cableados, como un objeto o factorias de estado, y a la vez permite especificar algunos valores por defecto.
Segundo, puede usarse como un mecanismo de despliegue. Por ejemplo, supongamos que obtenemos un proveedor de servicio LDAP de un vendedor. Podemos personalizar ese proveedor a�adiendo, por ejemplo, algunos objetos y factor�as de estado disponibles para nuestro enterprise, como factor�as para contabilidad y objetos de empleados. Cuando nuestras aplicaciones con enterprise usen este proveedor, aquellas factor�as de estado se utilizar�n atom�ticamente sin que la aplicaci�n o el usuario hayan especificado las propiedades relevantes mediante ficheros de recursos de aplicaci�n, propiedades de sistema, par�metros de applets o par�metros del entorno del contexto inicial.
El grado en que podemos manipular el fichero de recursos de un proveedor de servicios depende de c�mo est� empaquetado el propio proveedor. Por ejemplo si el proveedor est� empaquetado en un fichero JAR, podemos suministar un fichero de recursos de proveedor actualizado extrayendo primero los contenidos del fichero JAR y reempaquet�ndolos con el nuevo fichero de recursos actualizado.
Observa que este procedimiento no est� recomendado para los proveedores de servicios que est�n enpaquetados en la Java 2 SDK/JRE, Standard Edition, v1.3. Para estos proveedores de servicios no deber�amos intentar actualizar los ficheros de recursos de proveedor. En su lugar, deber�amos usar ficheros de recursos de aplicaci�n como se describio en una lecci�n anterior.
�Propiedades Afectadas
Aunque un fichero de recursos de proveedor puede contener cualquier propiedad, el JNDI busca s�lo las siguientes propiedades en un fichero de recursos de proveedor.
java.naming.factory.object java.naming.factory.state java.naming.factory.control java.naming.factory.url.pkgs
Al contrario que los contenidos de un fichero de recursos de aplicaci�n, los contenidos de un fichero de recursos de proveedor no se a�aden al entorno. En su lugar, estos contenidos aumentan el valor del entorno suministrado a los siguientes m�todos.
- NamingManager.getObjectInstance(Object, Name, Context, Hashtable)
- DirectoryManager.getObjectInstance(Object, Name, Context, Hashtable, Attributes)
- NamingManager.getStateToBind(Object, Name, Context, Hashtable)
- DirectoryManager.getStateToBind(Object, Name, Context, Hashtable, Attributes)
- ControlFactory.getControlInstance(Control, Context, Hashtable)
Cuando un proveedor de servicio llama a uno de estos m�todos, le suministra un ejemplar del Context desde el que se llama al m�todo y el entorno del contexto. El JNDI usa el cargador de clases del contexto para encontrar el fichero de recursos del proveedor y a�adir los valores de la propiedad (importantes para el m�todo) a la misma propiedad encontrada en el entorno. Luego usa la propiedad resultante como una lista ordenada de factor�as donde buscar.
Por ejemplo, supongamos que el proveedor de servicios LDAP, est� implementado usando la clase� com.sun.jndi.ldap.LdapCtx, llama a DirectoryManager.getObjectInstance(). El JNDI encontrar� el valor de la propiedad "java.naming.factory.object" desde el fichero com/sun/jndi/ldap/jndiprovider.properties y lo a�ade al valor de la propiedad "java.naming.factory.object" encontrada en el par�metro de� entorno (Hashtable). El JNDI usa esta lista de factor�as para encontrar una factor�a de objetos que devuelva una respuesta no-null.
Un proveedor de servicios es libre para acceder a otras propiedades del fichero de recursos de proveedor pero el comportamiento es espec�fico del proveedor.